package com.wonders.hisdoctor.station.project.medicine.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.wonders.his.common.config.jackson.DecimalFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author 张澎_9970
 * @date 2021.3.19 上午 10:41 星期五
 * @desc: 处方明细_VO
 */
@Data
public class PrescriptionVO implements Serializable {

    private static final long serialVersionUID = 1378050224929134660L;

    // 展示字段
    /**
     * 处方属性
     */
    @ApiModelProperty("处方属性")
    private String prescClass;

    /**
     * 处方属性名
     */
    @ApiModelProperty("处方属性名")
    private String prescName;

    /**
     * 处方号
     */
    @ApiModelProperty("处方号")
    private Integer prescNo;

    /**
     * 类型
     */
    @ApiModelProperty("类型")
    private String itemClass;

    /**
     * 成组标志
     */
    @ApiModelProperty("成组标志")
    private String groupFlag;

    /**
     * 药品名称
     */
    @ApiModelProperty("药品名称")
    private String drugName;

    /**
     * 规格
     */
    @ApiModelProperty("规格")
    private String drugSpec;

    /**
     * 数量
     */
    @ApiModelProperty("数量")
    private BigDecimal amount;

    /**
     * 单位 | 数量单位
     */
    @ApiModelProperty("单位")
    private String units;

    /**
     * 用量 | 一次吃几片
     */
    @ApiModelProperty("一次用量：单次用药量")
    private BigDecimal dosage;

    /**
     * 单位: 单次用量单位
     */
    @ApiModelProperty("单位: 单次用量单位")
    private String dosageUnits;

    /**
     * 给药方式：如口服、肌注等
     */
    @ApiModelProperty("用药途径：如口服、肌注等")
    private String administration;

    /**
     * 给药方式名称
     */
    @ApiModelProperty("给药方式名称")
    private String administrationName;

    /**
     * 频次：执行的频次，如1/日
     */
    @ApiModelProperty("频次：执行的频次，如1/日")
    private String frequency;

    /**
     * 天数
     */
    @ApiModelProperty("天数")
    @Size(max = 999, message = "天数不能大于999")
    private Integer prescDuration;

    /**
     * 自备标志
     */
    @ApiModelProperty("自备标志 1-病人自备药，0-正常计价")
    private Integer providedIndicator;

    /**
     * 计价金额：按标准价格计算得到的费用
     */
    @ApiModelProperty("计价金额：按标准价格计算得到的费用")
    @DecimalFormat(scale = 2)
    private BigDecimal costs;

    // 展示字段_草药独有
    /**
     * 付（剂）数：适用于中草药处方，西药处方默认是1
     */
    @ApiModelProperty("付（剂）数：适用于中草药处方，西药处方默认是1")
    private Integer repetition;

    /**
     * 医生嘱托(草药使用说明)
     */
    @ApiModelProperty("医生嘱托(草药使用说明)")
    private String herbUsage;

    // 隐藏字段
    /**
     * 就诊时间
     */
    @ApiModelProperty("就诊时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date visitDate;

    /**
     * 就诊序号
     */
    @ApiModelProperty("就诊序号")
    @NotNull(message = "就诊序号不能为空")
    private Integer visitNo;

    /**
     * 流水号
     */
    @ApiModelProperty("流水号")
    private String serialNo;

    /**
     * 序号
     */
    @ApiModelProperty("序号")
    private Integer itemNo;

    /**
     * 状态
     */
    @ApiModelProperty("状态")
    private Integer status;

    /**
     * 药品代码
     */
    @ApiModelProperty("药品代码")
    private String drugCode;

    /**
     * 摆药药局
     */
    @ApiModelProperty("摆药药局")
    private String dispensary;

    /**
     * 厂家标识
     */
    @ApiModelProperty("厂家标识")
    private String firmId;

    // 状态表字段
    /**
     * 处方标识号
     */
    @ApiModelProperty("处方标识号")
    private String prescId;

    // 表外字段
    /**
     * 机构代码
     */
    @ApiModelProperty("机构代码")
    private String hospitalCode;

    /**
     * storages
     */
    private List<String> storages;

    /**
     * expireRangeDays
     */
    private Integer expireRangeDays;

    /**
     * 药品种类数
     */
    private Integer number;

    /**
     * SUPPLY_INDICATOR
     */
    private Integer supplyIndicator;

}
